// 表单验证规则

// 验证规则集合
export const validateDescriptor = {
  // 必填项
  required: { required: true, message: '请输入该必填项', trigger: 'blur' },

  // 自定义必填消息
  requiredMsg: (msg) => ({ required: true, message: msg, trigger: 'blur' }),

  // 密码验证：最小长度8，必须包含字母、数字和特殊字符
  pwd: {
    pattern: /^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8}/,
    message: '密码最小长度为8，必须包含字母、数字和特殊字符',
    trigger: 'blur'
  },

  // IP地址验证
  ip: {
    pattern: /^([1-9]|[1-9]\d|1\d{2}|2[0-1]\d|22[0-3])(\.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}$/,
    message: '请输入有效的IP地址',
    trigger: 'blur'
  },

  // 节点名称验证：英文字母、数字、-、_，不能以-开头，不能是纯数字
  nodeName: {
    pattern: /^(?!-)(?!\d+$)[a-zA-Z0-9_-]+$/,
    message: '请勿输入除英文字母、数字、-、_之外的字符，不能以-开头且不能是纯数字！',
    trigger: 'blur'
  },

  // 字母和数字
  alphanumeric: {
    pattern: /^[a-zA-Z0-9_-]*$/,
    message: '请勿输入除英文字母、数字、-、_之外的字符',
    trigger: 'blur'
  },

  // 邮箱验证
  email: {
    pattern: /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/,
    message: '请输入有效的邮箱地址',
    trigger: 'blur'
  },

  // 端口验证
  port: {
    pattern: /^((6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])|[0-5]?\d{0,4})$/g,
    message: '请输入0~65535的整数',
    trigger: 'blur'
  },

  // 长度验证
  length: (min, max) => ({
    min,
    max,
    message: `字符长度为${min}~${max}`,
    trigger: 'blur'
  }),

  // 必须以字母开头
  startWithAlpha: {
    pattern: /^[a-zA-Z]/,
    message: '请以字母开头',
    trigger: 'blur'
  },

  // 绝对路径
  absPath: {
    pattern: /^\//,
    message: '请以/开头',
    trigger: 'blur'
  }
}

// 导出单个验证规则（向后兼容）
export const vd = validateDescriptor
